package com.jtny.nytb.equipment.dto.dataparam;

import com.jtny.component.entity.BaseDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * @author 智慧能源中心 - zx
 * @package com.jtny.nytb.energymonitor.equipment.vo.model
 * @fileName DataParamTempVO.java
 * @createTime 2023年09月19日 11:00
 * @Copyright© 2023 jtny
 * 江投能源技术研究院 版权所有
 */

@ApiModel("设备模型参量DTO对象")
@Data
@EqualsAndHashCode(callSuper = true)
public class DataParamTempDTO extends BaseDTO implements Serializable {

    /**
     * 参量编号
     */
    @ApiModelProperty("参量编号")
    private String code;

    /**
     * 参量名称
     */
    @ApiModelProperty("参量名称")
    private String name;

    /**
     * 参量别名
     */
    @ApiModelProperty("参量别名")
    private String alias;

    /**
     * 参量状态，0表示正常，1表示禁用，9表示已删除
     */
    @ApiModelProperty("参量状态，0表示正常，1表示禁用，9表示已删除")
    private Integer status;

    /**
     * 数据上报标识
     */
    @ApiModelProperty(value = "数据上报标识", required = true)
    @NotBlank(message = "数据上报标识不能为空")
    private String reportIdentifier;

    /**
     * 统一参量标识
     */
    @ApiModelProperty(value = "统一参量标识", required = true)
    private String unifiedIdentifier;

    /**
     * 统一参量标识名称
     */
    @ApiModelProperty(value = "统一参量标识名称", required = true)
    private String unifiedIdentifierName;

    /**
     * 参量来源(1设备自动采集 2系统计算 3常量 4手动填报)
     */
    @ApiModelProperty(value = "参量来源(1设备自动采集 2系统计算 3常量 4手动填报)", required = true)
    private Integer source;


    /**
     * 计量长度id
     */
    @ApiModelProperty(value = "计量长度单位Id", required = true)
    @NotBlank(message = "计量长度不能为空")
    private String measurementUnitId;

    /**
     * 计量单位名字
     */
    @ApiModelProperty(value = "计量单位名字", required = true)
    @NotBlank(message = "计量单位不能为空")
    private String measurementUnit;

    /**
     * 小数点位
     */
    @ApiModelProperty(value = "小数点位", required = true)
    @NotNull(message = "小数点位不能为空")
    private Integer digit;


    /**
     * 实时量/累计量(0:实时量;1:累计量)
     */
    @ApiModelProperty(value = "实时量/累计量(0:实时量;1:累计量)", required = true)
    private Integer dataType;

    /**
     * 默认图表
     */
    @ApiModelProperty(value = "默认图表: '1': '流向图 ,'2': '柱状图','3': '折线图','4': '饼图'", required = true)
    private Integer chart;

    /**
     * 描述
     */
    @ApiModelProperty("描述")
    private String paramDescribe;

    /**
     * 关联类型 1表示 relationId 为规则id， 2表示 relationId 为模型id
     */
    @ApiModelProperty("关联类型 1表示 relationId 为规则id， 2表示 relationId 为模型id")
    private Integer relationType;

    /**
     * 规则id或模型id
     */
    @ApiModelProperty("规则id或模型id")
    private Long relationId;

    /**
     * 记点频率
     */
    @ApiModelProperty(value = "记点频率")
    private Integer frequency;

    /**
     * 记点频率单位
     */
    @ApiModelProperty(value = "记点频率单位")
    private String frequencyUnit;

    /**
     * 公式对象
     */
    @ApiModelProperty("公式对象")
    private AlgorithmTempDTO algorithm;

    /**
     * 标签列表
     */
    @ApiModelProperty("标签列表")
    private List<LabelTempDTO> labelList;

    /**
     * 报警列表
     */
    @ApiModelProperty("报警列表")
    private List<AlarmTempDTO> alarmList;

    /**
     * 是否配电监测展示
     */
    @ApiModelProperty(value = "是否配电监测展示")
    private Boolean powerCheckDisplay;


    @ApiModelProperty("是否来自规则复制")
    private Boolean isCopyFromRule;

}
